package com.guomei.mapper.curse;

import com.guomei.bean.curse.CourseVideo;
import com.guomei.bean.curse.CourseVideoDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 课程视频表Mapper接口
 *
 * @author yourname
 * @date 2025-08-22
 */
@Mapper
public interface CourseVideoMapper {

    /**
     * 根据课程ID查询视频详细信息（包含课程和章节的全部字段）
     * @param courseId 课程ID（可选）
     * @return 视频详细信息列表
     */
    List<CourseVideoDetail> selectDetailByCourseId(@Param("courseId") Long courseId);
    /**
     * 根据ID查询课程视频
     *
     * @param id 视频ID
     * @return 课程视频实体
     */
    CourseVideo selectById(Long id);

    /**
     * 根据课程ID查询视频列表
     *
     * @param courseId 课程ID
     * @return 视频列表
     */
    List<CourseVideo> selectByCourseId(Long courseId);

    /**
     * 根据章节ID查询视频列表
     *
     * @param chapterId 章节ID
     * @return 视频列表
     */
    List<CourseVideo> selectByChapterId(Long chapterId);

    /**
     * 新增课程视频
     *
     * @param courseVideo 课程视频实体
     * @return 影响行数
     */
    int insert(CourseVideo courseVideo);

    /**
     * 修改课程视频
     *
     * @param courseVideo 课程视频实体
     * @return 影响行数
     */
    int update(CourseVideo courseVideo);

    /**
     * 根据ID删除课程视频
     *
     * @param id 视频ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 根据课程ID删除视频
     *
     * @param courseId 课程ID
     * @return 影响行数
     */
    int deleteByCourseId(Long courseId);

    /**
     * 根据ID列表查询视频详细信息（包含课程和章节的全部字段）
     * @param ids 视频ID列表
     * @return 视频详细信息列表
     */
    List<CourseVideoDetail> selectDetailByIds(@Param("ids") List<Long> ids);
}
